package com.zc.timedown.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * ClassName:UserInfoVo
 * Description:
 * DateTime: 2025/9/29 16:30
 * Author: zc
 * Version: 1.0
 */

@Data
@ApiModel(value = "用户信息")
public class UserInfoVo {
    /** 主键 */
    @ApiModelProperty(value = "用户ID", example = "1")
    private Long id;

    /** 名称 */
    @ApiModelProperty(value = "用户名称", example = "张三")
    private String name;

    /** 昵称 */
    @ApiModelProperty(value = "用户昵称", example = "小张")
    private String nickName;

    /** 手机号 */
    @ApiModelProperty(value = "手机号", example = "13800138000")
    private String phone;

    /** 头像 */
    @ApiModelProperty(value = "头像URL", example = "https://example.com/avatar.jpg")
    private String avatar;

    /** 出生日期 */
    @ApiModelProperty(value = "出生日期", example = "1990-01-01")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthDate;

    /** 期望寿命 */
    @ApiModelProperty(value = "期望寿命(年)", example = "80")
    private Integer expectedLifespan;

    /** OpenID */
    @ApiModelProperty(value = "微信OpenID", example = "oG4j54vP5ZJ5Z5Z5Z5Z5Z5Z5Z5Z5")
    private String openId;

    /** 性别(0:男，1:女) */
    @ApiModelProperty(value = "性别(0:男，1:女)", example = "0")
    private Integer gender;

    /** 城市 */
    @ApiModelProperty(value = "城市", example = "北京")
    private String city;

    /** 省份 */
    @ApiModelProperty(value = "省份", example = "北京市")
    private String province;

    /** 国家 */
    @ApiModelProperty(value = "国家", example = "中国")
    private String country;

    /** 用户状态：1-正常，0-禁用 */
    @ApiModelProperty(value = "用户状态：1-正常，0-禁用", example = "1")
    private Integer status;

    /** 注册时间 */
    @ApiModelProperty(value = "注册时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime registerTime;

    /** 最后登录时间 */
    @ApiModelProperty(value = "最后登录时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastLoginTime;

    /** 登录次数 */
    @ApiModelProperty(value = "登录次数", example = "10")
    private Long loginCount;

    /** 当前连击数 */
    @ApiModelProperty(value = "当前连击数", example = "5")
    private Integer currentStreak;

    /** 最大连击数 */
    @ApiModelProperty(value = "最大连击数", example = "10")
    private Integer maxStreak;

    /** 是否开启每日提醒 */
    @ApiModelProperty(value = "是否开启每日提醒", example = "true")
    private Boolean dailyReminderEnabled;

    @ApiModelProperty(value = "打卡天数", example = "5")
    private Integer clockInDays;

    @ApiModelProperty(value = "完成度", example = "0.8")
    private Double completionPercentage;

}
